package cn.zxinrun.core.constant;

/**
 * 安全相关常量
 * @author Mr.Zhang
 * @since 1.0
 **/
public interface SecurityConstants {

    // 超级管理员角色标识
    String SUPER_ROLE = "admin";
    // 超级管理员用户标识
    String SUPER_USER = "admin";
    // 超级管理员权限
    String SUPER_PERMISSION = "*:*:*";
    // 角色前缀
    String ROLE = "ROLE_";

    // 项目的 License
    String PROJECT_LICENSE = "https://www.zxinrun.cn";
    // 默认用户头像
    String DEFAULT_AVATAR = "https://www.static.zxinrun.cn/xr/avatar/default.png";

    // 来源标志
    String FROM = "from";
    // 内部
    String FROM_IN = "Y";

    // 验证码URL
    String CODE_URL = "/code/image";
    // 默认登录URL
    String OAUTH_TOKEN_URL = "/oauth2/token";
    // 授权码模式confirm
    String CUSTOM_CONSENT_PAGE_URL = "/token/confirm_access";

    // 验证码生成宽度
    int CODE_WIDTH = 100;
    // 验证码生成高度
    int CODE_HEIGHT = 40;
    // 验证码{%s}位运算
    int CODE_LENGTH = 2;
    // 验证码有效期,默认 60秒
    long CODE_TIME = 60L;

    // 授权类型 grant_type
    String GRANT_TYPE = "grant_type";
    // grant_type
    String REFRESH_TOKEN = "refresh_token";

    // 手机号登录
    String MOBILE = "mobile";
    // 密码登录
    String PASSWORD = "password";
    // 微信小程序登录
    String WECHAT_MINI_PROGRAM = "wechat_mini_program";

    // {bcrypt} 加密的特征码
    String BCRYPT = "{bcrypt}";
    // {noop} 加密的特征码
    String NOOP = "{noop}";

    // 客户端ID
    String CLIENT_ID = "clientId";
    // 密码加密密钥（16位，固定长度）
    String PASSWORD_SECRET = "thanks,qx&xr0928";
    // 系统通用秘钥（24位，字符串长度莫要修改）
    String SECRET = "~SFpv(y!x#ZV#*HJWo+kK~2y";
    // 访问令牌默认有效时间，默认 12 小时
    int ACCESS_TOKEN_VALIDITY_SECONDS = 60 * 60 * 12;
    // 刷新令牌默认有效时间，默认 30 天
    int REFRESH_TOKEN_VALIDITY_SECONDS = 60 * 60 * 24 * 30;

    // 用户名
    String USERNAME = "username";

    // 用户信息
    String DETAILS_USER = "user_info";

    // -------------- claim 参数 --------------
    // 用户ID
    String CLAIM_UID = "uid";
    // 用户部门id
    String CLAIM_DID = "did";
    // 用户名字段
    String CLAIM_UNAME = "uname";
    // 用户手机号
    String CLAIM_PHONE = "phone";

}
